动态主机配置DHCP


[toc]

DHCP的作用

一个主机如果要访问Internet,首先我们要手动配置IP地址信息,DNS服务器等网络相关配置,但如果主机的数目特别多时,显然全部手动配置并不现实,所以我们有动态主机配置DHCP

DHCP可以为局域网各个主机配置以下信息

  • IP地址
  • 子网掩码
  • 默认网关
  • DNS服务器

这样主机开机启动DHCP后就可以自动获取网络配置信息

DHCP的工作过程

假设有多个DHCP服务器和一个DHCP客户,DHCP客户服务使用的UDP端口68号,DHCP服务器使用的UDP端口号是67,封装有DHCP报文的UDP用户数据报在网络层被封装成IP数据报,然后再根据所使用的网络接口,封装成相应的数据链路帧进行发送

  1. DHCP客户启动时,会广播发送DHCPDISCOVER报文,封装该报文的IP数据报的
    • 源IP地址为0.0.0.0,因为此时DHCP客户还没有分配到IP地址
    • 目的IP地址为255.255.255.255,因为DHCP客户不知道网络中有几个DHCP服务器
    • 对于网络中的其他主机收到该IP数据报,其应用层没有监听该UDP用户数据报目的端口67的进程,所以收到后只会丢弃
    • DHCPDISCOVER封装有事务IDDHCP客户端的MAC地址
  2. DHCP服务器收到DHCPDISCOVER报文后,根据封装的MAC地址查找自己的数据库,看是否有针对该MAC地址的配置信息,如果有用这些配置信息构建DHCPOFFER报文,否则用默认配置信息来构建
    • 源IP地址为DHCP服务器
    • 目的IP地址为255.255.255.255,因为DHCP客户此时还没有配置IP地址
    • 对于网络中的其他主机,由于应用层没有监听UDP用户数据报的目的端口68的进程,收到后只会丢弃
    • DHCP客户根据DHCPOFFER报文中的事务ID是否和自己发送的DHCPDISCOVER报文的事务ID相同,以此来判断是不是自己所请求的报文
    • DHCPOFFER封装有事务ID,配置信息有:IP地址、子网掩码、地址租期、默认网关,DNS服务器等
    • DHCP服务器从自己的IP地址池挑选IP地址时,会先用ARP来确保IP地址未被网络中的其他主机占用
  3. DHCP客户会收到来自同一网络的所有DHCP服务器提供的DHCPOFFER报文,客户从中选择一个,一般来说选最先到的那一个,并向所选择的DHCP服务器发送DHCPREQUEST报文
    • 源IP地址为0.0.0.0因为DHCP客户才从多个DHCP服务器中挑选一个作为自己的DHCP服务器,它需要征得该服务器的同意,之后才能正式使用该DHCP服务器租用的IP地址
    • 目的地址为255.255.255.255,这样就不用向网络中的每个DHCP服务器单播DHCPREQUEST报文来告知它们是否请求它们作为DHCP服务器
    • DHCPREQUEST报文封装有事务ID,DHCP客户端的MAC地址,接受的租约中的IP地址,提供此租约的DHCP服务器的IP地址等
  4. DHCP服务器收到DHCPREQUEST报文后,如果服务器接受该请求,向DHCP客户发送DHCPACK报文
    • 源IP地址为DHCP服务器的IP地址
    • 目的IP地址为255.255.255.255
  5. DHCP客户收到DHCPACK报文后,主机使用ARP检测该IP地址是否被网络的其他主机占用,若被占用就重新发送DHCPDISCOVER报文,否则就可以使用该IP地址和网络中的其他主机通信了
  6. DHCP客户在使用租用的IP地址经过0.5倍的租用期时,向DHCP服务器发送DHCPREQUEST报文来请求更新租用期,发送的IP数据中
    • 源IP地址为当前的IP地址
    • 目的IP地址为DHCP服务器IP地址
  7. DHCP服务器收到DHCPREQUEST报文后,如果同一租约续租,发送一个DHCPACK报文给DHCP客户,这样客户就得到新的租期,否则发送DHCPNACK报文拒绝请求,此时DHCP客户必须停止使用之前租用的IP地址
  8. 如果DHCP服务器没有反应,在经过租期的0.875倍后,DHCP客户会再发送一个DHCPREQUEST报文请求租期续约
  9. 如果租用期到期后,DHCP客户必须停止使用之前租用的IP地址,并重新发生DHCPDISCOVER报文来申请新的地址
  10. DHCP客户可以随时提前终止DHCP服务器所提供的租用期,只需要向DHCP服务器发生DHCPRELEASE报文即可,IP数据报中
    • 目的IP地址为255.255.255.255
    • 源IP地址为0.0.0.0

DHCP中继代理

如果DHCP客户与所需要的DHCP服务器经由一个路由器相连,这时候DHCP客户能够自动获取到IP地址吗?

答案是不行,因为路由器不会转发一个广播报文,而是丢弃,所以我们需要给该路由器配置DHCP服务器的IP地址并使之称为DHCP中继代理,这样路由器收到广播的DHCPDISCOVER报文后,单播转发给DHCP服务器DHCP客户使用DHCP中继代理的主要原因是我们并不想在每个网络都设置一个DHCP服务器